package com.ybear.ybcomponent.widget.linkage.effector

import android.animation.ValueAnimator
import com.ybear.ybcomponent.widget.linkage.enums.ViewLinkage

/**
 * ExtendEffector 实现视图延伸效果器，用于在用户滑动时实现视图高度的延伸动画效果。
 *
 * 核心思路：
 * 1. 在 ACTION_DOWN 时记录原始视图高度及起始触摸位置。
 * 2. 在 ACTION_MOVE 时根据滑动距离动态改变视图高度，制造延伸效果。
 * 3. 在 ACTION_UP 或 ACTION_CANCEL 时，通过动画将视图恢复到目标高度（延伸到终点或恢复原位）。
 */
open class ExtendRecoveryEffector : ExtendEffector() {
    override fun onViewLinkage(): ViewLinkage { return ViewLinkage.EXTEND_RECOVERY }

    override fun handlerCreateExtendAnimator() : ValueAnimator {
        return createNumberAnimator(
            // 起始
            viewHeight(),
            // 终止
            originalHeight,
            // 回弹时长
            duration()
        ) {
            newHeight -> updateHeight( newHeight )
        }
    }
}